package com.boruishangge.common.uitls;

import android.Manifest;
import android.app.Activity;
import android.graphics.Color;
import android.view.Window;
import android.webkit.JavascriptInterface;

import com.alibaba.android.arouter.launcher.ARouter;
import com.bloodcrown.baselib.permission.PermissionManage;
import com.bloodcrown.baselib.utils.intent.IntentUtils;
import com.boruishangge.common.APlusARoute;
import com.boruishangge.common.APlushConstant;
import com.boruishangge.common.R;
import com.boruishangge.persagysdk.uitls.StatusBarUtil;
import com.boruishangge.persagysdk.uitls.UIUtils;
import com.yxing.ScanCodeActivity;
import com.yxing.ScanCodeConfig;
import com.yxing.def.ScanMode;
import com.yxing.def.ScanStyle;

import java.util.ArrayList;
import java.util.List;

import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import wendu.dsbridge.CompletionHandler;

/**
 * 提供给js 封装的方法
 * Created by wuaomall@gmail.com on 2019/9/24.
 */
public class WebViewJsApi {


    private Window window;

    private List<Integer> lis = new ArrayList<>();

    private Activity activity;
    String UlrName = "";

    public WebViewJsApi(Activity activity) {
        this.activity = activity;
        lis.clear();
        lis.add(0);
        lis.add(1);
        lis.add(2);
        lis.add(3);
    }

    public void setWindow(Window window) {
        this.window = window;
    }

    /**
     * 返回用户Id
     *
     * @param msg
     * @return
     */
    @JavascriptInterface
    public String getCustomerId(Object msg, CompletionHandler<String> handler) {
        if (APlushConstant.isLogin()) {
            handler.complete(APlushConstant.getCustomerId());
        } else {
            JumLogin();
        }
        return "";
    }


    /**
     * 返回用户姓名
     *
     * @param msg
     * @return
     */
    @JavascriptInterface
    public String getUserName(Object msg, CompletionHandler<String> handler) {
        if (APlushConstant.isLogin()) {
            handler.complete(APlushConstant.getCustomerId());
        } else {
            JumLogin();
        }
        return "";
    }

    /**
     * 返回用户Token
     *
     * @param msg
     * @return
     */
    @JavascriptInterface
    public String getCashToken(Object msg, CompletionHandler<String> handler) {
        if (APlushConstant.isLogin()) {
            handler.complete(APlushConstant.getTocken());
        } else {
            JumLogin();
        }
        return "";
    }

    /**
     * 返回用户所有信息
     *
     * @param msg
     * @return
     */
    @JavascriptInterface
    public String getUserInfo(Object msg, CompletionHandler<String> handler) {
        if (APlushConstant.isLogin()) {
            handler.complete(APlushConstant.getUserInfo());
        } else {
            JumLogin();
        }
        return "";
    }

    //打卡扫描页面
    @JavascriptInterface
    public void openScanCode(Object msg, CompletionHandler<String> handler) {
        new android.os.Handler(this.activity.getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                PermissionManage
                        .with(activity)
                        .permission(Manifest.permission.CALL_PHONE)
                        .permission(Manifest.permission.CAMERA)
                        .permission(Manifest.permission.READ_PHONE_STATE)
                        .onSuccess(new Function0<Unit>() {
                            @Override
                            public Unit invoke() {
                                goScanCodeActivity();
                                return null;
                            }
                        }).onDenial(new Function0<Unit>() {
                    @Override
                    public Unit invoke() {
//                        Toast.makeText(activity, "请求权限失败", Toast.LENGTH_SHORT).show();
                        return null;
                    }
                })
                        .onDontShow(new Function0<Unit>() {
                    @Override
                    public Unit invoke() {
                        IntentUtils.startSettingActivityForResult(activity, 3000);
                        return null;
                    }
                }).run();



            }
        });
    }


    @JavascriptInterface
    public String JumLogin(Object msg, CompletionHandler<String> handler) {
        JumLogin();
        return "";
    }

    @JavascriptInterface
    public String JumListLogin(Object msg, CompletionHandler<String> handler) {
        JumListLogin();
        return "";
    }

    @JavascriptInterface
    public String setStatusBar(Object msg, CompletionHandler<String> handler) {
        setStatusBar((String) msg);
        return "";
    }

    private void setStatusBar(String color) {
        if (UIUtils.FlymeSetStatusBarLightMode(window, true) || UIUtils.MIUISetStatusBarLightMode(window, true) || UIUtils.setAndroidOsSetStatusBarLightMode(window, true)) {
            StatusBarUtil.transparencyBar(activity); //设置状态栏全透明
            StatusBarUtil.StatusBarLightMode(activity); //设置白底黑字
            UIUtils.setWhiteBarColor(window, activity, Color.parseColor(color));

        }
    }


    private void JumLogin() {
        new android.os.Handler(this.activity.getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                activity.finish();
//                ARouter.getInstance().build(APlusARoute.Login_Router).navigation();
            }
        });
    }

    private void JumListLogin() {
        new android.os.Handler(this.activity.getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                activity.finish();
//                ARouter.getInstance().build(APlusARoute.Login_List_Router).navigation();
            }
        });
    }

    private void goScanCodeActivity() {
        ScanCodeConfig.create(activity)
                //设置扫码页样式 ScanStyle.NONE：无  ScanStyle.QQ ：仿QQ样式   ScanStyle.WECHAT ：仿微信样式  ScanStyle.CUSTOMIZE ： 自定义样式
                .setStyle(ScanStyle.QQ)
                //扫码成功是否播放音效  true ： 播放   false ： 不播放
                .setPlayAudio(true)
                //设置音效音频
                .setAudioId(R.raw.beep)
                ////////////////////////////////////////////
                //以下配置 在style为 ScanStyle.CUSTOMIZE 时生效
                //设置扫码框位置  left ： 边框左边位置   top ： 边框上边位置   right ： 边框右边位置   bottom ： 边框下边位置   单位/dp
//                                    .setScanRect(new ScanRect(50, 200, 300, 450), false)
                //设置扫码框位置 scanSize : 扫码框大小   offsetX ： x轴偏移量    offsetY ：y轴偏移量   单位 /px
                .setScanSize(800, 0, -200)
                //是否显示边框上四个角标 true ： 显示  false ： 不显示
                .setShowFrame(true)
                //设置边框上四个角标颜色
                .setFrameColor(R.color.white)
                //设置边框上四个角标圆角  单位 /dp
                .setFrameRaduis(2)
                //设置边框上四个角宽度 单位 /dp
                .setFrameWith(4)
                //设置边框上四个角长度 单位 /dp
                .setFrameLenth(15)
                //设置是否显示边框外部阴影 true ： 显示  false ： 不显示
                .setShowShadow(true)
                //设置边框外部阴影颜色
                .setShaowColor(R.color.black_tran30)
                //设置扫码条运动方式   ScanMode.REVERSE : 往复运动   ScanMode.RESTART ：重复运动    默认ScanMode.RESTART
                .setScanMode(ScanMode.REVERSE)
                //设置扫码条扫一次时间  单位/ms  默认3000
                .setScanDuration(3000)
                //设置扫码条图片
                .setScanBitmapId(R.mipmap.scan_wechatline)
                //////////////////////////////////////////////
                .buidler()
                //跳转扫码页   扫码页可自定义样式
                .start(ScanCodeActivity.class);

    }
}
